所需QtLocation OSM密钥 您所在的位置:网站首页 api key required地图 所需QtLocation OSM密钥

所需QtLocation OSM密钥

2024-04-15 12:43| 来源: 网络整理| 查看: 265

(复制自我在这里的博客文章:http://blog.mikeasoft.com/2020/06/22/qt-qml-maps-using-the-osm-plugin-with-api-keys/)

这并不明显,但在深入研究了OSM插件的工作方式之后,我发现了一种机制,通过这种机制可以将API密钥提供给需要的服务器。

在初始化OSM插件时,它与Qt提供者存储库进行通信,该存储库告诉它要为每个映射类型使用什么URL。提供者存储库的位置可以通过osm.mapping.providersrepository.address OSM插件属性进行自定义,所以我们需要做的就是使用我们的API建立自己的提供者存储库,其中包含我们的API密钥作为参数。存储库本身就是JSON文件的集合,其中包含特定的名称(自行车、自行车租赁、徒步旅行、徒步旅行、夜间运输、夜间转乘、卫星、街道、街道租赁、地形、地形租用、中转、过境租赁),每个名称对应于一种地图类型。*-hires文件为贴片提供了两倍于正常分辨率的URL,用于高DPI显示。

例如,这是由默认Qt提供程序存储库提供的循环文件:

{ "UrlTemplate" : "http://a.tile.thunderforest.com/cycle/%z/%x/%y.png", "ImageFormat" : "png", "QImageFormat" : "Indexed8", "ID" : "thf-cycle", "MaximumZoomLevel" : 20, "MapCopyRight" : "Thunderforest", "DataCopyRight" : "OpenStreetMap contributors" }

为了向我们的平铺请求提供API密钥,我们可以简单地修改UrlTemplate:

"UrlTemplate" : "http://a.tile.thunderforest.com/cycle/%z/%x/%y.png?apikey=YOUR_API_KEY",

自动存储库设置

我在这里创建了一个使用自定义API键建立完整存储库的简单工具:https://github.com/Elleo/qt-osm-map-providers

首先从https://www.thunderforest.com/docs/apikeys/获得API密钥下一个克隆我的存储库:git clone https://github.com/Elleo/qt-osm-map-providers.gitRun:./set_api_keys.sh your_api_key (用步骤1中获得的密钥替换your_api_key )将文件从这个存储库复制到您的the服务器(例如,存储库)将osm.mapping.providersrepository.address属性设置为指向步骤4中的位置设置(请参阅下面的QML示例)

QML实例

下面是一个快速示例QML应用程序,它将利用我们设置的自定义存储库:

import QtQuick 2.7 import QtQuick.Controls 2.5 import QtLocation 5.10 ApplicationWindow { title: qsTr("Map Example") width: 1280 height: 720 Map { anchors.fill: parent zoomLevel: 14 plugin: Plugin { name: "osm" PluginParameter { name: "osm.mapping.providersrepository.address"; value: "http://www.mywebsite.com/osm_repository" } PluginParameter { name: "osm.mapping.highdpi_tiles"; value: true } } activeMapType: supportedMapTypes[1] // Cycle map provided by Thunderforest } }

QML地图示例的截图



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有